import { app, NativeImage, nativeImage, nativeTheme } from 'electron'

import path from 'node:path'
import fs from 'node:fs'

// 图标键集合（保持原有集合与调用方兼容）
export type IconKey =
  | 'CUT'
  | 'COPY'
  | 'PASTE'
  | 'SELECT_ALL'
  | 'RELOAD'
  | 'OPEN_LINK'
  | 'OPEN_IN_NEW_TAB'
  | 'COPY_LINK'
  | 'COPY_IMAGE'
  | 'SAVE_IMAGE_AS'
  | 'TRANSLATE_PAGE'
  | 'INSPECT'

// 解析图标基础目录（兼容开发/生产）
function resolveIconsBaseDir(): string {
  const candidates = [
    // Vite 构建后：public 内容被拷贝到 dist 根目录（无 public 前缀）
    path.join(app.getAppPath(), 'icons', 'menu'),
    // 开发时：直接读取项目根的 public 目录
    path.join(app.getAppPath(), 'public', 'icons', 'menu'),
    // 打包资源目录兜底
    path.join(process.resourcesPath, 'icons', 'menu'),
    path.join(process.resourcesPath, 'public', 'icons', 'menu')
  ]
  for (const dir of candidates) {
    if (fs.existsSync(dir)) return dir
  }
  return candidates[0]
}

const ICONS_BASE_DIR = resolveIconsBaseDir()

// 获取 NativeImage（文件型图标，无缓存）
export function getMenuIcon(key: IconKey, size = 16): NativeImage | undefined {
  const theme = nativeTheme.shouldUseDarkColors ? 'dark' : 'light'
  const filename = `${String(key).toLowerCase()}-${size}.png`
  const full = path.join(ICONS_BASE_DIR, theme, filename)
  // 在 getMenuIcon 函数中替换 console.log
  // dialog.showMessageBox({
  //   type: 'info',
  //   title: 'Debug Info',
  //   message: `Full path: ${full}`,
  //   buttons: ['OK']
  // })
  const img = nativeImage.createFromPath(full)
  if (img && !img.isEmpty()) return img
  return undefined
}
